﻿// -----------------------------------------------------------------
// Custom Controls Plugin (Common)
// -----------------------------------------------------------------
// Yêu cậu khi import plugin:
//   + jQuery Plugin
//   + AngularJS Plugin
//   + CTS Helper Plugin
// -----------------------------------------------------------------
'use strict';
// -----------------------------------------------------------------
// Định nghĩa custom control
// -----------------------------------------------------------------
var CTS_COM_CCS_HTML_PATH = '/cts/com/ccs/html/';
// Alert
app.directive('ctsAlert', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.transclude = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'alert.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        class: '@',
        // Models
        model: '='
        // Events
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'model'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// Button
app.directive('ctsButton', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'button.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        tabindex: '@',
        text: '@',
        icon: '@',
        // Models
        disabled: "=",
        // Events
        onclick: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'tabindex',
                'text',
                'icon',
                'disabled',
                'onclick'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// Editor
app.directive('ctsEditor', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'editor.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        // Models
        model: '='
        // Events'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs, ctrl) {
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'model'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});

// File
app.directive('ctsFile', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'file.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        tabindex: '@',
        placeholder: '@',
        // Models
        model: '=',
        disabled: "=",
        // Events'
        onchange: '&',
        onblur: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs, ctrl) {
            // Khởi tạo biến cục bộ
            var input = elem.find('input');
            // Bind các sự kiện
            input.bind('change', function (ce) {
                var reader = new FileReader();
                reader.onload = function (le) {
                    scope.$apply(function () {
                        scope.model = le.target.result;
                    });
                }
                reader.readAsDataURL(ce.target.files[0]);
            });
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'tabindex',
                'placeholder',
                'model',
                'disabled',
                'onchange',
                'onblur'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// FormPane
app.directive('ctsFormPane', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.transclude = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'form-pane.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        class: '@',
        // Models
        // Events
        onload: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'onload'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// GridHeader
app.directive('ctsGridHeader', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'A';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'grid-header.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        class: '@',
        text: '@',
        orderBy: '@',
        // Models
        sortModel: '=',
        // Events
        onclick: '&',
        // Private
        _evtClick: '&',
        _chkSortState: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            // Khởi tạo event click
            scope._evtClick = function () {
                var data = {};
                if (scope.orderBy) {
                    var order = {};
                    if (scope.sortModel[scope.orderBy] === 'asc') {
                        order[scope.orderBy] = 'desc';
                    } else if (scope.sortModel[scope.orderBy] === 'desc') {
                        order[scope.orderBy] = '';
                    } else {
                        order[scope.orderBy] = 'asc';
                    }
                    scope.sortModel = order;
                    data.orderBy = scope.orderBy;
                    data.ascDesc = order[scope.orderBy];
                }
                scope.onclick({ data: data });
            }
            // Khởi tạo hàm check loại sort
            scope._chkSortState = function (ascDesc) {
                if (scope.orderBy) {
                    if (!scope.sortModel[scope.orderBy]) {
                        scope.sortModel[scope.orderBy] = '';
                    }
                    return scope.sortModel[scope.orderBy] === ascDesc;
                } else {
                    return false;
                }
            }
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'text',
                'orderBy',
                'sortable',
                'sortModel',
                'onclick'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// GridPane
app.directive('ctsGridPane', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.transclude = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'grid-pane.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        class: '@',
        // Models
        // Events
        onload: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            cts.helper.PageHelper.removeAttrs(elem, [
                'onload'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// Image
app.directive('ctsImage', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'image.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        src: '@',
        alt: '@',
        tabindex: '@',
        border: '@',
        transparent: '@',
        // Models
        disabled: "=",
        // Events
        onclick: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'src',
                'alt',
                'tabindex',
                'border',
                'transparent',
                'disabled',
                'onclick'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// Label
app.directive('ctsLabel', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'label.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        text: '@'
        // Models
        // Events
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'text'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// Number
app.directive('ctsNumber', function ($filter) {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'number.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        tabindex: '@',
        placeholder: '@',
        step: '@',
        scale: '@',
        min: '@',
        max: '@',
        floatNum: '@',
        negNum: '@',
        uiKeypress: '@',
        // Models
        model: '=',
        disabled: "=",
        // Events
        onchange: '&',
        onblur: '&',
        // Private
        _increase: '&',
        _decrease: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            // Khởi tạo biến cục bộ
            var triggerWatch = true;
            var input = elem.find('input');
            var number = $filter('number');
            var fmNumber = function () {
                scope.scale = parseInt(scope.scale);
                if (isNaN(scope.scale)) {
                    scope.scale = 0;
                }
                input.val(number(scope.model, scope.scale));
                triggerWatch = false;
            };
            var getFloat = function (val, def) {
                var res = parseFloat(val);
                if (isNaN(res)) {
                    res = def;
                }
                return res;
            };
            var floatMin = getFloat(scope.min, -Infinity);
            var floatMax = getFloat(scope.max, Infinity);
            var floatStep = getFloat(scope.step, 1);
            var updateModel = function (newValue) {
                scope.model = newValue;
                triggerWatch = false;
            };
            // Bind các sự kiện
            input.bind('focus', function () {
                input.val(scope.model);
                triggerWatch = false;
                input.select();
            });
            input.bind('blur', function () {
                fmNumber();
            });
            // Tạo spinner
            scope.$watch('model', function (newValue, oldValue) {
                if (newValue && triggerWatch) {
                    var regex = /^\d*$/;
                    if (angular.isDefined(scope.floatNum)) {
                        regex = /^\d*\.?\d*$/;
                        if (angular.isDefined(scope.negNum)) {
                            regex = /^-?\d*\.?\d*$/;
                        }
                    } else {
                        if (angular.isDefined(scope.negNum)) {
                            regex = /^-?\d*$/;
                        }
                    }
                    if (regex.test(newValue)) {
                        newValue = parseFloat(newValue);
                        if (!isNaN(newValue)) {
                            if (newValue < floatMin) {
                                updateModel(floatMin);
                            }
                            if (newValue > floatMax) {
                                updateModel(floatMax);
                            }
                        }
                    } else {
                        updateModel(oldValue);
                    }
                } else {
                    if (!newValue) {
                        updateModel(floatMin);
                    }
                    triggerWatch = true;
                }
            });
            scope._increase = function () {
                if (!scope.model) {
                    updateModel(floatMin);
                }
                var newValue = parseFloat(scope.model) + floatStep;
                if (newValue <= floatMax) {
                    updateModel(newValue);
                    input.focus();
                }
                if (scope.onchange) {
                    scope.onchange({ data: scope.model });
                }
            };
            scope._decrease = function () {
                if (!scope.model) {
                    updateModel(floatMin);
                }
                var newValue = parseFloat(scope.model) - floatStep;
                if (newValue >= floatMin) {
                    updateModel(newValue);
                    input.focus();
                }
            };
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'tabindex',
                'placeholder',
                'step',
                'scale',
                'min',
                'max',
                'model',
                'disabled',
                'onchange',
                'onblur'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// Password
app.directive('ctsPassword', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'password.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        tabindex: '@',
        uiKeypress: '@',
        // Models
        model: '=',
        disabled: "=",
        // Events
        onchange: '&',
        onblur: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            // Khởi tạo biến cục bộ
            var input = elem.find('input');
            // Bind các sự kiện
            input.bind('focus', function () {
                input.select();
            });
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'tabindex',
                'model',
                'disabled',
                'onchange',
                'onblur'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});

// Select
app.directive('ctsSelect', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'select.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        tabindex: '@',
        placeholder: '@',
        // Models
        model: '=',
        options: '=',
        disabled: "=",
        // Events
        onchange: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'tabindex',
                'placeholder',
                'model',
                'options',
                'disabled',
                'onchange'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// Text
app.directive('ctsText', function ($filter) {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'text.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        tabindex: '@',
        placeholder: '@',
        format: '@',
        uiKeypress: '@',
        // Models
        model: '=',
        disabled: "=",
        // Events'
        onchange: '&',
        onblur: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs, ctrl) {
            // Khởi tạo biến cục bộ
            var input = elem.find('input');
            var format = $filter('format');
            // Bind các sự kiện
            input.bind('focus', function () {
                input.val(scope.model);
                input.select();
            });
            input.bind('blur', function () {
                if (scope.format) {
                    input.val(format(scope.format, scope.model));
                }
            });
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'tabindex',
                'placeholder',
                'format',
                'model',
                'disabled',
                'onchange',
                'onblur'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
// Typeahead
app.directive('ctsTypeahead', function ($filter) {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'typeahead.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        tabindex: '@',
        placeholder: '@',
        format: '@',
        uiKeypress: '@',
        // Models
        model: '=',
        options: '=',
        disabled: "=",
        // Events'
        onchange: '&',
        onblur: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs, ctrl) {
            // Khởi tạo biến cục bộ
            var input = elem.find('input');
            var format = $filter('format');
            // Bind các sự kiện
            input.bind('focus', function () {
                input.val(scope.model);
                input.select();
            });
            input.bind('blur', function () {
                if (scope.format) {
                    input.val(format(scope.format, scope.model));
                }
            });
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'tabindex',
                'placeholder',
                'format',
                'model',
                'options',
                'disabled',
                'onchange',
                'onblur'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
































/* Alert
app.directive('ctsAlert', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.transclude = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'alert.html';
// Tạo biến scope
directive.scope = {
// Attributes
class: '@',
// Models
model: '='
// Events
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
cts.helper.PageHelper.removeAttrs(elem, [
'model'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
/* Button
app.directive('ctsButton', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'button.html';
// Tạo biến scope
directive.scope = {
// Attributes
id: '@',
class: '@',
tabindex: '@',
text: '@',
icon: '@',
// Models
// Events
onclick: '&'
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
cts.helper.PageHelper.removeAttrs(elem, [
'id',
'tabindex',
'text',
'icon',
'onclick'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
// Date
app.directive('ctsDate', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'date.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        tabindex: '@',
        placeholder: '@',
        format: '@',
        submit: '@',
        // Models
        model: '=',
        // Events
        onblur: '&',
        onchange: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            // Đối tượng sumbit
            if (scope.submit) {
                elem.find("input").attr('cts-submit', scope.submit);
            }
            // Xóa thuộc tính thừa
            cts.helper.PageHelper.removeAttrs(elem, [
                'id',
                'tabindex',
                'placeholder',
                'format',
                'model',
                'onblur',
                'onchange'
            ]);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
/* FormPane
app.directive('ctsFormPane', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.transclude = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'form-pane.html';
// Tạo biến scope
directive.scope = {
// Attributes
class: '@',
// Models
// Events
onload: '&'
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
cts.helper.PageHelper.removeAttrs(elem, [
'onload'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
/* GridPane
app.directive('ctsGridPane', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.transclude = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'grid-pane.html';
// Tạo biến scope
directive.scope = {
// Attributes
class: '@',
// Models
// Events
onload: '&'
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
cts.helper.PageHelper.removeAttrs(elem, [
'onload'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
/* GridHeader
app.directive('ctsGridHeader', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'A';
directive.replace = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'grid-header.html';
// Tạo biến scope
directive.scope = {
// Attributes
class: '@',
text: '@',
orderBy: '@',
// Models
sortModel: '=',
// Events
onclick: '&',
// Private
_evtClick: '&',
_chkSortState: '&'
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
// Khởi tạo event click
scope._evtClick = function () {
var data = {};
if (scope.orderBy) {
var order = {};
if (scope.sortModel[scope.orderBy] === 'asc') {
order[scope.orderBy] = 'desc';
} else if (scope.sortModel[scope.orderBy] === 'desc') {
order[scope.orderBy] = '';
} else {
order[scope.orderBy] = 'asc';
}
scope.sortModel = order;
data.orderBy = scope.orderBy;
data.ascDesc = order[scope.orderBy];
}
scope.onclick({ data: data });
}
// Khởi tạo hàm check loại sort
scope._chkSortState = function (ascDesc) {
if (scope.orderBy) {
if (!scope.sortModel[scope.orderBy]) {
scope.sortModel[scope.orderBy] = '';
}
return scope.sortModel[scope.orderBy] === ascDesc;
} else {
return false;
}
}
// Xóa thuộc tính thừa
cts.helper.PageHelper.removeAttrs(elem, [
'text', 'sortable', 'onclick'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
/* Image
app.directive('ctsImage', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'image.html';
// Tạo biến scope
directive.scope = {
// Attributes
id: '@',
class: '@',
src: '@',
alt: '@',
tabindex: '@',
border: '@',
transparent: '@',
submit: '@',
// Models
// Events
onclick: '&'
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
// Đối tượng sumbit
if (scope.submit) {
elem.find("img").attr('cts-submit', scope.submit);
}
// Xóa thuộc tính thừa
cts.helper.PageHelper.removeAttrs(elem, [
'id',
'src',
'alt',
'tabindex',
'border',
'transparent',
'onclick'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
// InputButton
app.directive('ctsInputButton', function () {
    // Khởi tạo biến cục bộ
    var directive = {};
    // Gán giá trị vào đối tượng directive
    directive.restrict = 'E';
    directive.replace = true;
    directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'input-button.html';
    // Tạo biến scope
    directive.scope = {
        // Attributes
        id: '@',
        class: '@',
        tabindex: '@',
        placeholder: '@',
        icon: '@',
        // Models
        model: '=',
        // Events
        onblur: '&',
        onchange: '&'
    };
    // Tạo hàm compile
    directive.compile = function (elem, attrs) {
        var fnLink = function (scope, elem, attrs) {
            cts.helper.PageHelper.removeAttrs(elem, ['id', 'tabindex', 'placeholder', 'icon', 'model', 'onchange']);
        }
        return fnLink;
    }
    // Kết quả xử lý
    return directive;
});
/* Label
app.directive('ctsLabel', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'label.html';
// Tạo biến scope
directive.scope = {
// Attributes
id: '@',
class: '@',
text: '@'
// Models
// Events
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
cts.helper.PageHelper.removeAttrs(elem, [
'id',
'text'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
/* Number
app.directive('ctsNumber', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'number.html';
// Tạo biến scope
directive.scope = {
// Attributes
id: '@',
class: '@',
tabindex: '@',
placeholder: '@',
step: '@',
scale: '@',
min: '@',
max: '@',
// Models
model: '=',
// Events
onblur: '&',
onchange: '&'
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
cts.helper.PageHelper.removeAttrs(elem, ['id', 'tabindex', 'placeholder', 'step', 'scale', 'model', 'onchange']);

if (!scope.step || isNaN(scope.step)) {
scope.step = 1;
}

if (!scope.min || isNaN(scope.min)) {
scope.min = -infinity;
}

if (!scope.max || isNaN(scope.max)) {
scope.max = infinity;
}

$(elem).spinner({ min: scope.min, max: scope.max, step: scope.step }, scope.model);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
/* Password
app.directive('ctsPassword', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'password.html';
// Tạo biến scope
directive.scope = {
// Attributes
id: '@',
class: '@',
tabindex: '@',
submit: '@',
// Models
model: '=',
// Events
onblur: '&',
onchange: '&'
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
// Đối tượng sumbit
if (scope.submit) {
elem.find("input").attr('cts-submit', scope.submit);
}
// Xóa thuộc tính thừa
cts.helper.PageHelper.removeAttrs(elem, [
'id',
'tabindex',
'model',
'onblur',
'onchange'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
/* Radio
app.directive('ctsRadio', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'radio.html';
// Tạo biến scope
directive.scope = {
// Attributes
id: '@',
class: '@',
tabindex: '@',
text: '@',
value: '@',
submit: '@',
// Models
model: '=',
// Events
onchange: '&'
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
// Đối tượng sumbit
if (scope.submit) {
elem.find("input").attr('cts-submit', scope.submit);
}
// Xóa thuộc tính thừa
cts.helper.PageHelper.removeAttrs(elem, [
'id',
'tabindex',
'text',
'value',
'model',
'onchange'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
/* Select
app.directive('ctsSelect', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'select.html';
// Tạo biến scope
directive.scope = {
// Attributes
id: '@',
class: '@',
tabindex: '@',
placeholder: '@',
submit: '@',
// Models
model: '=',
options: '=',
// Events
onchange: '&'
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
// Đối tượng sumbit
if (scope.submit) {
elem.find("button").attr('cts-submit', scope.submit);
}
// Xóa thuộc tính thừa
cts.helper.PageHelper.removeAttrs(elem, [
'id',
'tabindex',
'placeholder',
'model',
'options',
'onchange'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/
/* Text
app.directive('ctsText', function () {
// Khởi tạo biến cục bộ
var directive = {};
// Gán giá trị vào đối tượng directive
directive.restrict = 'E';
directive.replace = true;
directive.templateUrl = CTS_COM_CCS_HTML_PATH + 'text.html';
// Tạo biến scope
directive.scope = {
// Attributes
id: '@',
class: '@',
tabindex: '@',
format: '@',
textright: '@',
submit: '@',
// Models
model: '=',
// Events
onblur: '&',
onchange: '&'
};
// Tạo hàm compile
directive.compile = function (elem, attrs) {
var fnLink = function (scope, elem, attrs) {
// Đối tượng sumbit
if (scope.submit) {
elem.find("input").attr('cts-submit', scope.submit);
}
// Xóa thuộc tính thừa
cts.helper.PageHelper.removeAttrs(elem, [
'id',
'tabindex',
'format',
'model',
'onblur',
'onchange'
]);
}
return fnLink;
}
// Kết quả xử lý
return directive;
});*/